#ifndef AdvancedGFXH                     // <--- don't forget the "guards"
#define AdvancedGFXH  
#include "Experiment.h"   
#include "AdvancedGraphicsViewer.h"

class AdvancedGFX : public Experiment {  // <--- derive your experiment from base class <Experiment>
   GEOX_CLASS(AdvancedGFX)               // <--- use the macro to create registration code
                                               //
 private:                                      //
  GFXWidget3D* widget_3d;                       // <--- 
  float pathtrace_correction_factor;
  float specular_intensity;
  float gweight_sigma;
  int rays_per_pixel;
  bool enable_shadows;
  bool enable_reflection;
  bool enable_refraction;
  bool enable_pathtracer;
  bool enable_box_filter_AA;
  bool divide_subpixels;
  bool jitter_around_subpixels;
  bool enable_bvh;
  bool enable_per_vertex_normals;
  bool enable_gaussian_weighting;

  void UpdateParams();   
  void ToggleWireframe();//
  void PickColor();
  void RayTrace();
  void LoadCornell(); //Load a test scene consisting of transformed cubes mimicking the cornell box
  void UpdateImage();
 public:                                       //
   AdvancedGFX();                        // <--- the constructor is used to intialize the parameters
   void LoadModel();
   void LoadModel(string filename);
   void LoadModel(string filename, Matrix4f transform);

   virtual QWidget *createViewer();
 };

#endif